﻿var ODD     =   "#f6f6f6";
var EVEN    =   "#e1effb";
var COLOR = "#ffff00";

$.strPad = function (input, pad_length, pad_string, pad_type) {
    var output = input.toString();
    if (pad_string === undefined) { pad_string = ' '; }
    if (pad_type === undefined) { pad_type = 'STR_PAD_RIGHT'; }
    if (pad_type == 'STR_PAD_RIGHT') {
        while (output.length < pad_length) {
            output = output + pad_string;
        }
    } else if (pad_type == 'STR_PAD_LEFT') {
        while (output.length < pad_length) {
            output = pad_string + output;
        }
    } else if (pad_type == 'STR_PAD_BOTH') {
        var j = 0;
        while (output.length < pad_length) {
            if (j % 2) {
                output = output + pad_string;
            } else {
                output = pad_string + output;
            }
            j++;
        }
    }
    return output;
};

function cleanBox(objCampo) {
    objCampo.value = '';
}

function cleanBackG(objCampo) {
    $(objCampo).css('background-color', '#ffffff');
}
function paintBackG(objCampo) {
    $(objCampo).css('background-color', '#ffeeee');
}

function selectItem(objTd, idTr) {
   // alert(objTd + '<-->' + idTr);

    var objTr = objTd.parentNode;
    var idTrAux = $('#trsito').val();
    var classAux = $('#color').val();
    var claseActual = $(objTr).attr('class');
   // var colorBack = "#e1effb";
    var colorBack = EVEN;

    if (claseActual == 'odd') {
        colorBack = ODD;
    }
    $('#color').val(colorBack);
    $('#trsito').val(idTr);
    if (idTrAux.length > 0) {
        $("#" + idTrAux).addClass('class', classAux);
    }
    if (idTrAux.length > 0) {
        $("#" + idTrAux).css('background-color', classAux);
    }
    $(objTr).css('background-color', COLOR);
    $('#color').val(classAux);
}

function arraySeleccionados() {
    var count = 0;
    var arrayFilas = new Array("");
    $('input[type=checkbox]').each(function () {
        if (this.checked) {
            arrayFilas[count] = this.value;
            count++;
        }
    });
    if (count == 0) {
        alert("Por Favor, Seleccione el Item");
        return false;
    } else {
        return arrayFilas;
    }
}

function validaAlfaNumTamanio(objCampo, e, tamanio) {
    var caracteres = "abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNÑOPQRSTUVWXYZ0123456789";
    var teclasPermitidos = [8, 13, 20, 0, 40, 41, 42, 43, 44, 45, 46, 47, 58, 59, 63, 64, 35, 32];
    var NoPermitir = false;
    tecla = (document.all) ? e.keyCode : e.which;
    var caracter = String.fromCharCode(tecla);
    var objCampoValor = $.trim(objCampo.value);

    if (objCampoValor.length >= tamanio) {
        var mensaje = "Solo son permitidos " + tamanio + " caracteres";
        alert(mensaje);
        return false;
    } else {
        for (var i in teclasPermitidos) {
            if (tecla == teclasPermitidos[i]) {
                NoPermitir = true;
                break;
            }
        }
    }
    return caracteres.indexOf(caracter) != -1 || NoPermitir;
}
function onBlurUpper(campo) {
    $(campo).val($(campo).val().toUpperCase());
}

function escogerCheckBox(nombreCampo) {
    var arrayFilas = new Array();
    var count = 0;
    var LineasCheckBox = document.getElementsByTagName("input");
    var numElemCheck = (LineasCheckBox.length) ? LineasCheckBox.length : 1;
    var cadena = '';
    for (var i = 0; i < numElemCheck; i++) {
        var objCampo = (numElemCheck == 1) ? document.getElementById(nombreCampo) : LineasCheckBox[i];
        if (objCampo.checked) {
            arrayFilas[count] = objCampo.value;
            count++;
        }
    }
    if (count == 0) {
        alert("Por favor, seleccione el item(s)..");
        return false;
    } else {
        var tamanio = arrayFilas.length;
        count = 0;
        for (var k = 0; k < tamanio; k++) {
            count++;
            cadena += arrayFilas[k];
            if (count < tamanio) {
                cadena += ",";
            }
        }
        return cadena;
    }
}
function ValidarHoraRecep(objCampo, option) {
    var valorCampo = $.trim(objCampo.value);
    if (option === '1') {
        if (valorCampo.length > 0 && valorCampo > 23) {
            alert("Por Favor, la Hora debe ser menor o igual a 23 .. (hh24:mm)");
            objCampo.focus();
            return false;
        }
    } else if (option === '2') {
        if (valorCampo.length > 0 && valorCampo > 59) {
            alert("Por Favor,los minutos debe ser menor o igual a 59 .. (hh24:mm)");
            objCampo.focus();
            return false;
        }
    }
    return true;
}
function validarSoloNumeros(e) {
    tecla = (document.all) ? e.keyCode : e.which;
    if (tecla === 8) return true;
    patron = /[0-9]/;
    te = String.fromCharCode(tecla);
    return patron.test(te);
}
function validarCharFecha(e) {
    tecla = (document.all) ? e.keyCode : e.which;
   // alert(tecla);
    if (tecla === 8) return true;
    patron = /[0-9\s/]/;
    te = String.fromCharCode(tecla);
    return patron.test(te);
}
function validarSoloNumerosPunto(e) {
    tecla = (document.all) ? e.keyCode : e.which;
    if (tecla === 8) return true;
    patron = /[0-9\s.]/;
    te = String.fromCharCode(tecla);
    return patron.test(te);
}
function validarSoloLetras(e) {
    tecla = (document.all) ? e.keyCode : e.which;
    if (tecla == 8) return true;
    patron = /[A-Za-z\s-]/;
    te = String.fromCharCode(tecla);
    return patron.test(te);
}

function checkMayorMenor(objCampo, opcion) {
    var valorCampo = $.trim($(objCampo).val());
    var correcto = false;
    if (valorCampo.length > 0) {
        if (opcion == '1') {
            correcto = validarTextoPreliminar(valorCampo);
            correcto = !correcto;
        } else if (opcion == '2') {
            correcto = verificaSimboloMayorMenorComas(valorCampo);
        }
        if (correcto) {
            objCampo.value = 'Valor Ingresado Incorrecto';
            objCampo.style.color = 'red';
            objCampo.focus();
        } else {
            objCampo.style.color = 'black';
        }
    }
}
function verificaSimboloMayorMenorComas(texto) {
    var arrayAreas = new Array();
    arrayAreas = texto.split(",");
    alert(arrayAreas);
    var resultado = false;
    for (j = 0; j < arrayAreas.length; j++) {
        valor = $.trim(arrayAreas[j]);
        if (valor.length > 0) {
            existe = validarTextoPreliminar(arrayAreas[j]);
            if (!existe) {
                resultado = true;
                break;
            }
        }
    }
    return resultado;
}

function validaDestinatarios(objDestino) {
    var arrayAreas  =   new Array();
    var texto       =   $.trim($(objDestino).val());
    var arrayAreas  =   texto.split(",");
    var correcto    =   false;
    var sizeArray   =   arrayAreas.length - 1;

    for (j = 0; j < sizeArray; j++) {
        valor = $.trim(arrayAreas[j]);
        correcto = validarTextoPreliminar(valor);
        if (correcto) {
            var numero = parseInt(valorEntreCorchete(valor));
            if (numero == 0) {
                correcto = false;
                break;
            }
        }
    }    
    return correcto;
}

function soloValoresDestinatarios(objDestino,sw) {
    var arrayAreas  =   new Array();
    var arrayPura   =   new Array();
    var texto       = $.trim($(objDestino).val());

    if (sw == '1') {
        arrayPura[0] = texto;
    }else{
        var arrayAreas = texto.split(",");
        for (j = 0; j < arrayAreas.length - 1; j++) {
            arrayPura[j] = valorEntreCorchete(arrayAreas[j]);
        }        
    }
   return arrayPura.toString();
    
}
function validarTextoPreliminar(texto) {
    var pos_ini = texto.indexOf('<');
    var pos_fin = texto.indexOf('>');
    if ((pos_ini > 0) && (pos_fin > 0)) {
        return true;
    } else {
        return false;
    }
}

function valorEntreCorchete(texto) {
    var pos_ini = texto.indexOf('<');
    var pos_fin = texto.indexOf('>');
    return texto.substring(pos_ini + 1, pos_fin);
}
//funcion obtenida de www.sunat.gob.pe
function validaRuc(valor) {
  var sumaTotal = 0
  var k         = 6
  var digito    = 0;
  var resto     = 0;

    for (i = 0; i < valor.length - 1; i++) {
        if (i == 4) k = 8
        digito = valor.charAt(i) - '0';
        k--;
        if (i == 0) {
            sumaTotal += (digito * k);
        } else {
            sumaTotal += (digito * k);
        }
    }
    resto = sumaTotal % 11;
    resto = 11 - resto;
    if (resto >= 10) resto = resto - 10;
    if (resto == valor.charAt(valor.length - 1) - '0') {
        return true
    }
    alert('Por Favor, verfique el RUC no es valido...');
    return false
}

function isValidEmail(objEmail) {
    var valido = true;
    var email = $.trim($(objEmail).val());
    if (email.length>0) {
        var pattern = new RegExp(/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i);
        valido = pattern.test(email);
        if (!valido) {
            alert('Por Favor, el correo electronico no es valido...');
            $(objEmail).focus();
        }
    }
}
function roundNumero(value, places) {
    var multiplier = Math.pow(10, places);
    var newValor = (Math.round(value * multiplier) / multiplier);
    return newValor;
}

function hideBoton(objBoton) {
    $(objBoton).hide();
}


function setFechaCaja(objCampo) {   
    var valorObjCampo = $.trim($(objCampo).val());
    var dia = $.trim(valorObjCampo.substring(0, 2));
    var mes = $.trim(valorObjCampo.substring(3, 5));
    var anio = $.trim(valorObjCampo.substring(6, 10));

    if (valorObjCampo.substring(0, 2).length == 2 && valorObjCampo.substring(0, 2) == '00') {
        alert("El valor del dia no puede ser 00.");
        $(objCampo).val('');
        return false;
    }
    if (valorObjCampo.length == 2 || valorObjCampo.length == 5) {        
        if (!IsDigitsNew(objCampo, dia)) {
            $(objCampo).val('');
            return false;
        }
        if (!IsDigitsNew(objCampo, mes)) {
            $(objCampo).val('');
            return false;
        }
        objCampo.value += "/";
    }

    if (valorObjCampo.length == 10) {
        if (!ValDateTextNew(objCampo)) {
            objCampo.value = "";
        }
    }
}

/*------------------------------------------------------------------------------------------------------------------------*/
//Validacion de la fecha para un campo texto
function ValDateTextNew(objCampo) {
    var valorObjCampo = $.trim($(objCampo).val());
    if (valorObjCampo.length <= 0) return;
    var dia = $.trim(valorObjCampo.substring(0, 2));
    var mes = $.trim(valorObjCampo.substring(3, 5));
    var anio = $.trim(valorObjCampo.substring(6, 10));

    if (dia.length <=0) {
        alert("Digite el dia en la fecha. \n 'dd/mm/aaaa'");
        objCampo.focus();
        return false;
    }
    if (mes.length <= 0) {
        alert("Digite el mes en la fecha. \n dd/mm/aaaa");
        objCampo.focus();
        return false;
    }
    // validacion del a?o //
    if (anio.length < 4 || mes.length <= 0) {
        alert("En el anio se deben ingresar 4 digitos. \n 'dd/mm/aaaa'");
        objCampo.focus();
        return false;
    }
   
    if (!IsDigitsNew(objCampo, anio)) {
        return false;
    }

    var a = new Date;
    if ((eval(anio) < 1910 || eval(anio) > 2050)) {
        alert("El anio solo acepta numeros entre el intervalo 1910 al 2050. \n 'dd/mm/aaaa'");
        objCampo.focus();
        return false;
    }
    residuo(eval(anio), 4);
    pri = res;
    residuo(eval(anio), 100);
    seg = res;
    residuo(eval(anio), 400);
    tri = res;
    if (eval(mes) == 2 && eval(dia) > 29) {
        alert("Este mes no acepta este numero de dia. \n 'dd/mm/aaaa'");
        objCampo.focus();
        return false;
    }

    if (consisfec(dia, mes, anio) == false) {
        alert("Este a?o no es bisiesto y no acepta este numero de d?a en este mes.");
        objCampo.focus();
        return false;
    }

    //validacion del mes //
    if (mes > 12) {
        alert("El numero de mes es incorrecto. \n 'dd/mm/aaaa'");
        objCampo.focus();
        return false;
    }
    if ((mes == 1 || mes == 3 || mes == 5 || mes == 7 || mes == 8 || mes == 10 || mes == 12) && (dia >= 32)) {
        alert("Este mes no acepta este numero de dia. \n 'dd/mm/aaaa'");
        objCampo.focus();
        return false;
    }
    if ((mes == 4 || mes == 6 || mes == 9 || mes == 11) && (dia >= 31)) {
        alert("Este mes no acepta este numero de dia. \n 'dd/mm/aaaa'");
        objCampo.focus();
        return false;
    }
    return true;
}
function IsDigitsNew(objCampo, valorNumero) {
    var number = valorNumero;
    var VALID_CHAR = "1234567890.";

    for (i = number.length - 1; i >= 0; i--) {
        esta = false;
        for (var k = 0; k < VALID_CHAR.length ; k++) {
            if (number.charAt(i) == VALID_CHAR.charAt(k)) esta = true;
        }
        if (!esta) {
            var message = 'Datos no validos en el campo ' + objCampo.id + ' (Solo Numeros)';
            alert(message);
            objCampo.focus();
            return false;
        }
    }
    return true;
}
function residuo(IntDvdo, IntDvsor) {
    do
        IntDvdo -= IntDvsor
    while (IntDvsor < IntDvdo)
    res = IntDvdo
}
function consisfec(xdia, xmes, xano) {
    var meses = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
    meses[1] = ((xano % 4) == 0) ? 29 : 28;
    return ((xdia <= meses[xmes - 1]) ? true : false);  // true -> OK     false -> KO
}

function validaFechas(objFecIni, objFecFin, dias,checkDias) {
    var fecIni = $.trim($(objFecIni).val());
    var fecFin = $.trim($(objFecFin).val());
    var oK = true;
    var numdias = 90;
    if (fecIni.length <= 0 || fecFin.length <= 0) {
        if (fecIni.length <= 0) {
            alert("Por favor, la fecha inicial es necesaria...");
            objFecIni.focus();
            oK = false;
            return false;
        }
        if (fecFin.length <= 0) {
            alert("Por favor, la fecha fin es necesaria...");
            objFecFin.focus();
            oK = false;
            return false;
        }
    }
    if (dias) numdias = parseInt(dias);
    var toDateIni = this.convierteFecha(fecIni);
    var toDateFin = this.convierteFecha(fecFin);
    var diference = this.daysElapsed(toDateFin, toDateIni);
    if (diference < 0) {
        alert("Por Favor,La fecha Inicial debe ser menor que la fecha Fin..");
        oK = false;
        return false;
    }
    if (oK && checkDias) {
        if (diference > numdias) {
            alert('Por Favor el Maximo Numero de dias que puede Consultar es: ' + numdias);
            var milisecSumarRestar = parseInt(numdias * 24 * 60 * 60 * 1000);
            toDateIni.setTime(toDateIni.getTime() + milisecSumarRestar);
            dia = toDateIni.getDate();
            mes = toDateIni.getMonth() + 1;
            mes = (mes < 10) ? mes = '0' + mes : mes;
            dia = (dia < 10) ? dia = '0' + dia : dia;
            anio = toDateIni.getYear();
            newFecIni = dia + "/" + mes + "/" + anio;
            $(objFecIni).val(fecIni);
            $(objFecFin).val(newFecIni);
        }
    }
    return oK;
}

function convierteFecha(dateString) {
    var vdate = new Date(dateString.substring(6, 10), dateString.substring(3, 5) - 1, dateString.substring(0, 2));
    return vdate;
}
function daysElapsed(date1, date2) {
    var difference = Date.UTC(this.y2k(date1.getYear()), date1.getMonth(), date1.getDate(), 0, 0, 0) - Date.UTC(this.y2k(date2.getYear()), date2.getMonth(), date2.getDate(), 0, 0, 0);
    return difference / 1000 / 60 / 60 / 24;
}
function y2k(number) {
    return (number < 1000) ? number + 1900 : number;
}

function roundNumero(value, places) {
    var multiplier = Math.pow(10, places);
    //alert(multiplier);
    var newValor = (Math.round(value * multiplier) / multiplier);
    // alert(newValor);
    return newValor;
}